using System;
using System.Collections.Generic;
using Rage.Base.Abilities;

namespace Rage.Marauder
{
    public class CombatFactorsMarauder : CombatFactors
    {
        public CombatFactorsMarauder(Character character, Base.StatsWarrior stats, CalculationOptionsMarauder calcOpts, BossOptions bossOpts)
        {
            Char = character;
            MH = Char == null || Char.MainHand == null ? new Knuckles() : Char.MainHand.Item;
            OH = Char == null || Char.OffHand == null || (Char.MarauderTalents.Annihilate == 0 && Char.MarauderTalents.Annihilate == 0) ? null : Char.OffHand.Item;
            Talents = Char == null || Char.MarauderTalents == null ? new MarauderTalents() : Char.MarauderTalents;
            CalcOpts = (calcOpts == null ? new CalculationOptionsMarauder() : calcOpts);
            BossOpts = (bossOpts == null ? new BossOptions() : bossOpts);
            StatS = stats;
            CritProcs = new WeightedStat[] { new WeightedStat() { Chance = 1f, Value = 0f } };
            InvalidateCache();
        }

        #region Global Variables
        public Base.StatsWarrior Stats { get { return _statsWarrior; } set { _statsWarrior = value; } }
        private Base.StatsWarrior _statsWarrior;
        public MarauderTalents TalentsMarauder { get { return _talentsMarauder; } set { _talentsMarauder = value; } }
        private MarauderTalents _talentsMarauder;
        public CalculationOptionsMarauder CalcOptsMarauder { get { return _calcOptsMarauder; } set { _calcOptsMarauder = value; } }
        private CalculationOptionsMarauder _calcOptsMarauder;
        #endregion

        #region Weapon Damage Calcs
        #region Major Damage Factors
        #endregion
        #region Weapon Damage
        #endregion
        #region Weapon Crit Damage
        #endregion
        #region Weapon Blocked Damage
        #endregion
        #region Speed
        #endregion
        #endregion
        #region Attack Table
        #region Hit Rating
        #endregion

        #region Miss
        private float MissPrevBonuses {
            get {
                return //StatS.PhysicalHit    // Hit Perc bonuses like Draenei Racial
                        /* + */ AccuracyPercMh_Basic;          // Bonus from Hit Rating
            }
        }
        private float YwMissCap { get { return StatConversion.BASIC_MISS_CHANCE_CAP[LevelDif]; } }
        private float YwMissChance { get { return Math.Max(0f, YwMissCap - MissPrevBonuses); } }
        #endregion
        #region Dodge
        #endregion
        #region Parry
        #endregion
        #region Shield
        #endregion
        #region Crit
        #endregion
        #endregion
        #region Other
        #endregion
        #region Attackers Stats against you
        #endregion
    }
}
